package com.examples.table;

import java.util.Random;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class TableBackgroundExample {

	  public static void main(String[] a) {
	    final Display d = Display.getDefault();
	    final Shell s = new Shell(d);

	    s.setSize(250, 200);
	    GridLayout gl = new GridLayout();
	    gl.numColumns = 4;
	    s.setLayout(gl);

	    final Table t = new Table(s, SWT.BORDER | SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION);
	    final GridData gd = new GridData(GridData.FILL_BOTH);
	    gd.horizontalSpan = 4;
	    t.setLayoutData(gd);
	    t.setHeaderVisible(true);
	    final TableColumn tc1 = new TableColumn(t, SWT.LEFT);
	    final TableColumn tc2 = new TableColumn(t, SWT.CENTER);
	    final TableColumn tc3 = new TableColumn(t, SWT.CENTER);
	    tc1.setText("First Name");
	    tc2.setText("Last Name");
	    tc3.setText("Address");
	    tc1.setWidth(70);
	    tc2.setWidth(70);
	    tc3.setWidth(80);
	    TableItem item1 = new TableItem(t, SWT.NONE);
	    item1.setText(new String[] { "A", "B", "Address 1" });
	    TableItem item2 = new TableItem(t, SWT.NONE);
	    item2.setText(new String[] { "C", "D", "Address 2" });
	    TableItem item3 = new TableItem(t, SWT.NONE);
	    item3.setText(new String[] { "E", "F", "Address 3" });

	    final Text find = new Text(s, SWT.SINGLE | SWT.BORDER);
	    final Text replace = new Text(s, SWT.SINGLE | SWT.BORDER);
	    final Button replaceBtn = new Button(s, SWT.BORDER | SWT.PUSH);
	    replaceBtn.setText("Replace");
	    replaceBtn.addSelectionListener(new SelectionAdapter() {
	      public void widgetSelected(SelectionEvent e) {
	        TableItem[] tia = t.getItems();

	        for (int i = 0; i < tia.length; i++) {
	          if (tia[i].getText(0).equalsIgnoreCase(find.getText())) {
	            tia[i].setText(0, replace.getText());
	            Random rand = new Random(System.currentTimeMillis());	            
	            tia[i].setBackground(new Color(d,rand.nextInt(255),rand.nextInt(255),rand.nextInt(255)));
	          }
	        }
	      }
	    });

	    s.open();
	    while (!s.isDisposed()) {
	      if (!d.readAndDispatch())
				d.sleep();
		}
	}
}